<?php

require_once 'IFiltro.php';

/**
 * @author tsalles
 * @copyright 2008
 */

abstract class ExtratorAbstrato {
    // Coleção de elementos obtidos do documento filtrado
    private $elementosFiltrados;
    private $filtro;
    
   /**
    * Função responsável por aplicar os filtros definidos ao
    * documento origem, gerando um documento contendo apenas
    * os elementos desejados.
    */
    public function filtrarDocumento($conteudo) {
        $doc = new DOMDocument();
        @$doc->loadHTML($conteudo);
        $doc->preserveWhiteSpace = false;
        $this->elementosFiltrados = $this->aplicaFiltro($doc, $conteudo, $this->filtro);
    }

    public function obtemElementosFiltrados() {
        return $this->elementosFiltrados;
    }

   /**
    * A classe concreta deverá implementar esse método de forma
    * a definir como deve ser feita a filtragem, ou seja, o tipo
    * de elemento, como deve ser feita a seleção, etc.
    */
    abstract public function aplicaFiltro(DOMDocument $doc, 
                                          $conteudo, 
                                          $filtro);
    
}
     
?>